package gestion.horarios.model.jpa.entities;

import java.io.Serializable;
import javax.persistence.*;
import java.util.List;


/**
 * The persistent class for the usuario database table.
 * 
 */
@Entity
@Table(name="usuario")
public class Usuario implements Serializable {
	private static final long serialVersionUID = 1L;
	private int usuarioId;
	private String apellidos;
	private String codigo;
	private String contrasena;
	private String estado;
	private String nombres;
	private String nombreUsuario;
	private List<Rol> rols;
	private List<SolicitudCambioHorario> solicitudcambiohorarios;
	private List<SolicitudCambioMallaCurricular> solicitudcambiomallacurriculars;
	private List<SolicitudCambioPlanCurricular> solicitudcambioplancurriculars;
	private TipoUsuario tipousuario;

    public Usuario() {
    }


	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	@Column(unique=true, nullable=false)
	public int getUsuarioId() {
		return this.usuarioId;
	}

	public void setUsuarioId(int usuarioId) {
		this.usuarioId = usuarioId;
	}


	@Column(nullable=false, length=45)
	public String getApellidos() {
		return this.apellidos;
	}

	public void setApellidos(String apellidos) {
		this.apellidos = apellidos;
	}


	@Column(nullable=false, length=45)
	public String getCodigo() {
		return this.codigo;
	}

	public void setCodigo(String codigo) {
		this.codigo = codigo;
	}


	@Column(length=45)
	public String getContrasena() {
		return this.contrasena;
	}

	public void setContrasena(String contrasena) {
		this.contrasena = contrasena;
	}


	@Column(length=45)
	public String getEstado() {
		return this.estado;
	}

	public void setEstado(String estado) {
		this.estado = estado;
	}


	@Column(nullable=false, length=45)
	public String getNombres() {
		return this.nombres;
	}

	public void setNombres(String nombres) {
		this.nombres = nombres;
	}


	@Column(length=45)
	public String getNombreUsuario() {
		return this.nombreUsuario;
	}

	public void setNombreUsuario(String nombreUsuario) {
		this.nombreUsuario = nombreUsuario;
	}


	//bi-directional many-to-many association to Rol
    @ManyToMany
	@JoinTable(
		name="rolesusuario"
		, joinColumns={
			@JoinColumn(name="UsuarioId", nullable=false)
			}
		, inverseJoinColumns={
			@JoinColumn(name="RolId", nullable=false)
			}
		)
	public List<Rol> getRols() {
		return this.rols;
	}

	public void setRols(List<Rol> rols) {
		this.rols = rols;
	}
	

	//bi-directional many-to-one association to SolicitudCambioHorario
	@OneToMany(mappedBy="usuario")
	public List<SolicitudCambioHorario> getSolicitudcambiohorarios() {
		return this.solicitudcambiohorarios;
	}

	public void setSolicitudcambiohorarios(List<SolicitudCambioHorario> solicitudcambiohorarios) {
		this.solicitudcambiohorarios = solicitudcambiohorarios;
	}
	

	//bi-directional many-to-one association to SolicitudCambioMallaCurricular
	@OneToMany(mappedBy="usuario")
	public List<SolicitudCambioMallaCurricular> getSolicitudcambiomallacurriculars() {
		return this.solicitudcambiomallacurriculars;
	}

	public void setSolicitudcambiomallacurriculars(List<SolicitudCambioMallaCurricular> solicitudcambiomallacurriculars) {
		this.solicitudcambiomallacurriculars = solicitudcambiomallacurriculars;
	}
	

	//bi-directional many-to-one association to SolicitudCambioPlanCurricular
	@OneToMany(mappedBy="usuario")
	public List<SolicitudCambioPlanCurricular> getSolicitudcambioplancurriculars() {
		return this.solicitudcambioplancurriculars;
	}

	public void setSolicitudcambioplancurriculars(List<SolicitudCambioPlanCurricular> solicitudcambioplancurriculars) {
		this.solicitudcambioplancurriculars = solicitudcambioplancurriculars;
	}
	

	//bi-directional many-to-one association to TipoUsuario
    @ManyToOne
	@JoinColumn(name="TipoUsuarioId", nullable=false)
	public TipoUsuario getTipousuario() {
		return this.tipousuario;
	}

	public void setTipousuario(TipoUsuario tipousuario) {
		this.tipousuario = tipousuario;
	}
	
}